<?php
/**
 * @package Pods\Upgrade
 */
class PodsUpgrade_2_1_0 extends PodsUpgrade {

    /**
     * @var string
     */
    protected $version = '2.1.0';

    /**
     *
     */
    function __construct () {
    }

    /**
     * @return array|bool|int|mixed|null|void
     */
    public function prepare_relationships () {
        $relationship_fields = $this->api->load_fields( array( 'type' => 'pick' ) );

        $count = 0;

        if ( !empty( $relationship_fields ) )
            $count = count( $relationship_fields );

        return $count;
    }

    /**
     * @return string
     */
    public function migrate_relationships () {
        if ( true === $this->check_progress( __FUNCTION__ ) )
            return '1';

        $migration_limit = (int) apply_filters( 'pods_upgrade_item_limit', 1500 );
        $migration_limit = max( $migration_limit, 100 );

        $last_id = (int) $this->check_progress( __FUNCTION__ );

        $relationship_fields = $this->api->load_fields( array( 'type' => array( 'pick', 'file' ) ) );

        foreach ( $relationship_fields as $field ) {
            $pod = $this->api->load_pod( array( 'pod' => $field[ 'pod' ] ) );

            // Only target pods that are meta-enabled
            if ( !in_array( $pod[ 'type' ], array( 'post_type', 'media', 'user', 'comment' ) ) )
                continue;

            // Only target multi-select relationships
            $single_multi = pods_var( $field[ 'type' ] . '_format_type', $field[ 'options' ], 'single' );

            if ( 'multi' == $single_multi )
                $limit = (int) pods_var( $field[ 'type' ] . '_limit', $field[ 'options' ], 0 );
            else
                $limit = 1;

            if ( $limit <= 1 )
                continue;

            // Get and loop through relationship meta
            $sql = "

            ";

            // if serialized (or array), save as individual meta items and save new order meta key
        }

        $last_id = true;

        $rel = array();

        $this->update_progress( __FUNCTION__, $last_id );

        if ( $migration_limit == count( $rel ) )
            return '-2';
        else
            return '1';
    }

    /**
     * @return string
     */
    public function migrate_cleanup () {
        $this->upgraded();

        $this->api->cache_flush_pods();

        return '1';
    }

    /**
     *
     */
    public function restart () {
        $upgraded = get_option( 'pods_framework_upgraded' );

        if ( empty( $upgraded ) || !is_array( $upgraded ) )
            $upgraded = array();

        delete_option( 'pods_framework_upgrade_' . str_replace( '.', '_', $this->version ) );

        if ( in_array( $this->version, $upgraded ) )
            unset( $upgraded[ array_search( $this->version, $upgraded ) ] );

        update_option( 'pods_framework_upgraded', $upgraded );
    }

    /**
     *
     */
    public function cleanup () {
        $this->restart();
    }
}
